home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / svgapb23 / svgademo.bas < prev    next >
Encoding:
BASIC Source File  |  1995-01-19  |  23.6 KB  |  717 lines

  1. '****************************************************************************
  2. '*
  3. '*      'SVGAPB' A Super VGA Graphics Librarys for use with 
  4. '*      Power Basic Inc's Power BASIC 3.00c and later
  5. '*      Copyright 1993-1995 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      Power BASIC is a registered trademark of Power BASIC Inc.
  8. '*
  9. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  10. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  11. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  12. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  13. '*    **********************************************************************
  14. '*
  15. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  16. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  17. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  18. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  19. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  20. '*    * liable for any damages resulting from the use or misuse of the     *
  21. '*    * SOFTWARE and documentation.                                        *
  22. '*    **********************************************************************
  23. '*
  24. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  25. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  26. '*    * by the U.S. Government is subject to the restrictions as set forth *
  27. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  28. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  29. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  30. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  31. '*    **********************************************************************
  32. '*
  33. '*    **********************************************************************
  34. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  35. '*    * terms and conditions.                                              *
  36. '*    **********************************************************************
  37. '*
  38. '****************************************************************************
  39.  
  40.  
  41.     $LINK "SVGAPB.PBL"
  42.     $INCLUDE "SVGAPB.BI"
  43.  
  44.     DEFINT A-Z
  45.  
  46.     DIM POINTARRY3D(13) AS SHARED P3Dtype
  47.     DIM PLAYARRY(13) AS SHARED P3Dtype
  48.     DIM PLOTARRY(13) AS SHARED P2DType
  49.     DIM OPLOTARRY(13) AS SHARED P2DType
  50.     DIM DYNAMIC GFXBLK1(10000) AS SHARED INTEGER
  51.     DIM DYNAMIC GFXBLK2(32000) AS SHARED INTEGER
  52.     DIM DYNAMIC GFXBLK3(32000) AS SHARED INTEGER
  53.     DIM MAGMOUSECURSOR(386) AS SHARED BYTE
  54.     DIM BIGMOUSECURSOR(386) AS SHARED BYTE
  55.     DIM STWMOUSECURSOR(386) AS SHARED BYTE
  56.     DIM PAL(255) AS SHARED RGBType
  57.     DIM PAL2(255) AS SHARED RGBType
  58.     DIM ORGPAL(255) AS SHARED RGBType
  59.     DIM PCXPAL(255) AS SHARED RGBType
  60.     
  61.     $INCLUDE "SVGADEMO.BI"
  62.     $INCLUDE "SVGAMOD1.BAS"
  63.     $INCLUDE "SVGAMOD2.BAS"
  64.     
  65.  
  66.     '*************************************************************************
  67.     '* SAVE THE STARTING VIDEOMODE AND SET IT TO MODE 3.
  68.     '*************************************************************************
  69.     STARTVIDEOMODE = VIDEOMODEGET
  70.     DUMMY = RESTEXT
  71.     CLS
  72.     FOR A = 0 TO 33
  73.         DUMMY$ = INKEY$  '* CLEAR THE KEYBOARD BUFFER
  74.     NEXT A
  75.  
  76.     '*************************************************************************
  77.     '* MOVE THE DOS CURSOR TO THE TOP LEFT TO START THE PROGRAM AND SAY HELLO
  78.     '*************************************************************************
  79.     LOCATE 1, 15
  80.     PRINT "'SVGAPB' A Super VGA Graphics Librarys for use with"
  81.  
  82.     LOCATE 2, 19
  83.     PRINT "Power Basic Inc's Power BASIC 3.00c and later"
  84.  
  85.     LOCATE 4, 10
  86.     PRINT "Copyright 1993-1995 by Stephen L. Balkum and Daniel A. Sill"
  87.     LOCATE 12, 25
  88.     PRINT "Demonstration/Example Program"
  89.     LOCATE 23, 1
  90.     PRINT "Press a key to begin the demo..."
  91.     GETKEY (RET$)
  92.     CLS
  93.  
  94.     '*************************************************************************
  95.     '* LET'S ID THE PROCESSOR FIRST AS THE LIBRARY REQUIRES A 386 OR BETTER.
  96.     '*************************************************************************
  97.     'LOCATE 1, 1
  98.     CPU = WHICHCPU
  99.     CPU$ = STR$(CPU)
  100.     L = LEN(CPU$)
  101.     CPU$ = RIGHT$(CPU$, L - 1)
  102.     IF CPU < 386 THEN
  103.         PRINT "Sorry, this library requires a 80386 or better processor."
  104.         PRINT "Processor is identified as a 80"; CPU$; "."
  105.         PRINT "Demo program will be terminated."
  106.         PRINT
  107.         PRINT "Press a key..."
  108.         SOUND 100, 5
  109.         WHILE INKEY$ = ""
  110.         WEND
  111.         VIDEOMODESET STARTVIDEOMODE
  112.     END
  113.     END IF
  114.  
  115.     '*************************************************************************
  116.     '* LET'S ID THE VIDEO CARD/CHIP AS THE LIBRARY REQUIRES A SUPERVGA ADAPTER.
  117.     '*************************************************************************
  118.     VGA = WHICHVGA
  119.     PRINT "Microprocessor is identified as a 80"; CPU$; "."
  120.     PRINT
  121.     SELECT CASE VGA
  122.         CASE = 1
  123.             VGA$ = "Acumos AVGA2/3 SuperVGA"
  124.         CASE = 2
  125.             VGA$ = "ATI Technologies 18/28/38/68800 SuperVGA"
  126.         CASE = 3
  127.             VGA$ = "Ahead V5000 ver A SuperVGA"
  128.         CASE = 4
  129.             VGA$ = "Ahead V5000 ver B SuperVGA"
  130.         CASE = 5
  131.             VGA$ = "Chips and Technologies 82C450/1/2/3/5/6/7 SuperVGA"
  132.         CASE = 6
  133.             VGA$ = "Cirrus Logic CL-GD 5xx,6xx,28xx,54xx,62xx SuperVGA"
  134.         CASE = 7
  135.             VGA$ = "Everex Ev236/6xx Micro Enhancer SuperVGA"
  136.         CASE = 8
  137.             VGA$ = "Genoa 61/62/63/64/6600 SuperVGA"
  138.         CASE = 9
  139.             VGA$ = "NCR 77C21/22/22E/22E+ SuperVGA"
  140.         CASE = 10
  141.             VGA$ = "Oak Technologies OTI-037C/067/077/087 SuperVGA"
  142.         CASE = 11
  143.             VGA$ = "Paradise/Western Digital PVGA1A,WD90C00/1x/2x/3x SuperVGA"
  144.         CASE = 12
  145.             VGA$ = "Realtek RT3106 SuperVGA"
  146.         CASE = 13
  147.             VGA$ = "Trident 8800CS,8900B/C/CL/CX,90x0 SuperVGA"
  148.         CASE = 14
  149.             VGA$ = "Tseng Labs ET3000-AX/BX/BP SuperVGA"
  150.         CASE = 15
  151.             VGA$ = "Tseng Labs ET4000/W32/W32I SuperVGA"
  152.         CASE = 16
  153.             VGA$ = "VESA compatible SuperVGA"
  154.         CASE = 17
  155.             VGA$ = "Video 7 HT-208/16 SuperVGA"
  156.         CASE = 18
  157.             VGA$ = "Avance Logic AL2101 SuperVGA"
  158.         CASE = 19
  159.             VGA$ = "MXIC MX68000/10 SuperVGA"
  160.         CASE = 20
  161.             VGA$ = "Primus P2000 SuperVGA"
  162.         CASE ELSE
  163.             VGA$ = "Unknown"
  164.             VGA = 0
  165.     END SELECT
  166.     IF VGA < 1 THEN
  167.         PRINT "Sorry, unable to identify video card or it is not a SuperVGA video adapter."
  168.         PRINT "Demo program will be terminated."
  169.         PRINT
  170.         PRINT "Press a key..."
  171.         SOUND 100, 5
  172.         WHILE INKEY$ = ""
  173.         WEND
  174.         PRINT "VGA=";VGA
  175.         VIDEOMODESET STARTVIDEOMODE
  176.         END
  177.     ELSE
  178.         PRINT "Video card/chip is identified as a "; VGA$; "."
  179.     END IF
  180.  
  181.     '*************************************************************************
  182.     '* LET'S SEE THE HOW MUCH MEMORY IS INSTALLED ON THE SUPER VGA ADAPTER.
  183.     '*************************************************************************
  184.     VIDEOMEMORY = WHICHMEM
  185.     MEM$ = STR$(VIDEOMEMORY)
  186.     MEM$ = RIGHT$(MEM$, LEN(MEM$) - 1) + " kB"
  187.     IF VIDEOMEMORY < 1 THEN
  188.         PRINT "Sorry, unable to identify the amount of installed video memory."
  189.         PRINT "Demo program will be terminated."
  190.         PRINT
  191.         PRINT "Press a key..."
  192.         SOUND 100, 5
  193.         WHILE INKEY$ = ""
  194.         WEND
  195.         VIDEOMODESET STARTVIDEOMODE
  196.         END
  197.     ELSE
  198.         PRINT "Installed video memory identified as "; MEM$; "."
  199.     END IF
  200.  
  201.     '*************************************************************************
  202.     '* LET'S TELL THE USER WHAT THE HIGHEST RESOLUTION THAT THE VIDEO CARD
  203.     '* AND ITS INSTALLED MEMORY CARD IS CAPABLE OF. THE MONITOR MUST BE ABLE
  204.     '* TO SUPPORT THOSE MODES TOO !
  205.     '*************************************************************************
  206.     PRINT "Video card and installed memory is capable of the following resolutions:"
  207.     SELECT CASE VIDEOMEMORY
  208.         CASE > 2047
  209.             PRINT TAB(4); "320x200 in 256 colors"
  210.             PRINT TAB(4); "640x400 in 256 colors"
  211.             PRINT TAB(4); "640x480 in 256 colors"
  212.             PRINT TAB(4); "800x600 in 256 colors"
  213.             PRINT TAB(4); "1024x768 in 256 colors"
  214.             PRINT TAB(4); "1280x1024 in 256 colors"
  215.             MAXVAL = 5
  216.         CASE > 1023
  217.             PRINT TAB(4); "320x200 in 256 colors"
  218.             PRINT TAB(4); "640x400 in 256 colors"
  219.             PRINT TAB(4); "640x480 in 256 colors"
  220.             PRINT TAB(4); "800x600 in 256 colors"
  221.             PRINT TAB(4); "1024x768 in 256 colors"
  222.             MAXVAL = 4
  223.         CASE > 511
  224.             PRINT TAB(4); "320x200 in 256 colors"
  225.             PRINT TAB(4); "640x400 in 256 colors"
  226.             PRINT TAB(4); "640x480 in 256 colors"
  227.             PRINT TAB(4); "800x600 in 256 colors"
  228.             MAXVAL = 3
  229.         CASE ELSE
  230.             PRINT TAB(4); "320x200 in 256 colors"
  231.             PRINT TAB(4); "640x400 in 256 colors"
  232.             MAXVAL = 1
  233.     END SELECT
  234.     PRINT
  235.     PRINT "PLEASE keep in mind that not all monitors support all resolutions."
  236.     PRINT "If you know your monitor will not work properly in certain resolutions"
  237.     PRINT "(such as 1024x768 or 1280x1024), do NOT run the demo in that resolution."
  238.     PRINT
  239.  
  240.     '*************************************************************************
  241.     '* LET'S LOOK FOR A MOUSE. IF WE FIND ONE, TELL ALL ABOUT IT
  242.     '*************************************************************************
  243.     MOUSE = WHICHMOUSE
  244.     IF MOUSE > 0 THEN
  245.         MOUSEINFO MJV, MNV, TP, I
  246.         VER$ = STR$(MNV)
  247.         L = LEN(VER$)
  248.         VER$ = STR$(MJV) + "." + RIGHT$(VER$, L - 1)
  249.         VER$ = "Software driver version is" + VER$ + " (Microsoft equivalent version)."
  250.         SELECT CASE TP
  251.             CASE = 1
  252.                 MTYPE$ = "bus mouse"
  253.             CASE = 2
  254.                 MTYPE$ = "serial mouse"
  255.             CASE = 3
  256.                 MTYPE$ = "Inport mouse"
  257.             CASE = 4
  258.                 MTYPE$ = "PS/2 mouse"
  259.             CASE = 5
  260.                 MTYPE$ = "HP mouse"
  261.             CASE ELSE
  262.                 MTYPE$ = "unknown type"
  263.         END SELECT
  264.         PRINT "Microsoft compatible " + MTYPE$ + " detected with" + STR$(MOUSE) + " buttons on IRQ" + STR$(I) + "."
  265.         PRINT VER$
  266.     ELSE
  267.         PRINT "No Microsoft compatible mouse detected."
  268.     END IF
  269.     PRINT
  270.  
  271.     '*************************************************************************
  272.     '* LET'S LOOK FOR JOYSTICKS
  273.     '*************************************************************************
  274.     JOYSTICK = WHICHJOYSTICK
  275.     SELECT CASE JOYSTICK
  276.         CASE = -1
  277.             A$ = "No joystick port detected or no joystick BIOS support present."
  278.         CASE = 0
  279.             A$ = "No joystick detected."
  280.         CASE = 1
  281.             A$ = "Joystick A is present and available."
  282.         CASE = 2
  283.             A$ = "Joystick B is present and available."
  284.         CASE = 3
  285.             A$ = "Both Joystick A and Joystick B are present and available."
  286.     END SELECT
  287.     PRINT A$
  288.     PRINT
  289.     PRINT "Press a key..."
  290.     GETKEY RET$
  291.  
  292.     '*************************************************************************
  293.     '* LET'S GET DOWN TO BUSINESS!
  294.     '*************************************************************************
  295.     RES = 1
  296.     ENDIT = 0
  297.  
  298.     '*************************************************************************
  299.     '* INIT ALTERNATE MOUSE CURSORS
  300.     '*************************************************************************
  301.     FOR I = 0 TO 385
  302.         READ MAGMOUSECURSOR(I)
  303.     NEXT I
  304.     FOR I = 0 TO 385
  305.         READ BIGMOUSECURSOR(I)
  306.     NEXT I
  307.     FOR I = 0 TO 385
  308.         READ STWMOUSECURSOR(I)
  309.     NEXT I
  310.  
  311.     '*************************************************************************
  312.     '* INIT ALTERNATE COLOR PALETTES
  313.     '*************************************************************************
  314.     DUMMY = RES320
  315.     PALGET ORGPAL(0), 0, 255
  316.     PALCOPY ORGPAL(0), PAL(0), 0, 255
  317.     PALCOPY ORGPAL(0), PAL2(0), 0, 255
  318.     MYPI! = 8 * ATN(1) / 240
  319.     FOR Colr = 0 TO 239
  320.         R1 = 32 + SIN((Colr + 0) * MYPI!) * 31
  321.         G1 = 32 + SIN((Colr + 80) * MYPI!) * 31
  322.         B1 = 32 + SIN((Colr + 160) * MYPI!) * 31
  323.         R2 = 32 + SIN((Colr + 10) * MYPI!) * 31
  324.         G2 = 32 + SIN((Colr + 30) * MYPI!) * 31
  325.         B2 = 32 + SIN((Colr + 50) * MYPI!) * 31
  326.         OFFSET = Colr + 16
  327.         PAL(OFFSET).R = R1  '* RED
  328.         PAL(OFFSET).G = G1  '* GREEN
  329.         PAL(OFFSET).B = B1  '* BLUE
  330.         PAL2(OFFSET).R = R2  '* RED
  331.         PAL2(OFFSET).G = G2  '* GREEN
  332.         PAL2(OFFSET).B = B2  '* BLUE
  333.     NEXT Colr
  334.     DUMMY = RESTEXT
  335.  
  336.     '*************************************************************************
  337.     '* HERE IS THE MAIN SELECTOR LOOP
  338.     '*************************************************************************
  339.     WHILE ENDIT = 0
  340.         RetVal$ = ""
  341.         CLS
  342.         SOUND 700, .75
  343.         SELECT CASE RES
  344.             CASE = 1
  345.                 RES$ = "320x200x256"
  346.             CASE = 2
  347.                 RES$ = "640x400x256"
  348.             CASE = 3
  349.                 RES$ = "640x480x256"
  350.             CASE = 4
  351.                 RES$ = "800x600x256"
  352.             CASE = 5
  353.                 RES$ = "1024x768x256"
  354.             CASE = 6
  355.                 RES$ = "1280x1024x256"
  356.         END SELECT
  357.         PRINT "Please select the demo you would like to see in the " + RES$ + " resolution:"
  358.         PRINT
  359.         PRINT "(0)  Exit This Program"
  360.         PRINT
  361.         PRINT "(1)  Demo #1  The Primitive Drawing Routines"
  362.         PRINT "(2)  Demo #2  The Clipping Capabilities"
  363.         PRINT "(3)  Demo #3  The Fill Routines"
  364.         PRINT "(4)  Demo #4  The Palette Routines"
  365.         PRINT "(5)  Demo #5  The Block Routines"
  366.         PRINT "(6)  Demo #6  The Text Routines"
  367.         PRINT "(7)  Demo #7  The Scrolling And Paging Routines"
  368.         PRINT "(8)  Demo #8  The PCX Routines"
  369.         PRINT "(9)  Demo #9  The Mouse Routines"
  370.         PRINT "(10) Demo #10 The Joystick Routines"
  371.         PRINT "(11) Demo #11 The Two Dimensional Routines"
  372.         PRINT "(12) Demo #12 The Three Dimensional Routines"
  373.         PRINT "(13) The Grand Tour Of All Demos"
  374.         SELECT CASE VIDEOMEMORY
  375.             CASE > 2047
  376.                 PRINT "(14) Use 320x200x256  Resolution"
  377.                 PRINT "(15) Use 640x400x256  Resolution"
  378.                 PRINT "(16) Use 640x480x256  Resolution"
  379.                 PRINT "(17) Use 800x600x256  Resolution"
  380.                 PRINT "(18) Use 1024x768x256 Resolution"
  381.                 PRINT "(19) Use 1280x1024x256 Resolution"
  382.                 MAXVAL = 19
  383.             CASE > 1023
  384.                 PRINT "(14) Use 320x200x256  Resolution"
  385.                 PRINT "(15) Use 640x400x256  Resolution"
  386.                 PRINT "(16) Use 640x480x256  Resolution"
  387.                 PRINT "(17) Use 800x600x256  Resolution"
  388.                 PRINT "(18) Use 1024x768x256 Resolution"
  389.                 MAXVAL = 18
  390.             CASE > 511
  391.                 PRINT "(14) Use 320x200x256  Resolution"
  392.                 PRINT "(15) Use 640x400x256  Resolution"
  393.                 PRINT "(16) Use 640x480x256  Resolution"
  394.                 PRINT "(17) Use 800x600x256  Resolution"
  395.                 MAXVAL = 17
  396.             CASE ELSE
  397.                 PRINT "(14) Use 320x200x256  Resolution"
  398.                 PRINT "(15) Use 640x400x256  Resolution"
  399.                 MAXVAL = 15
  400.         END SELECT
  401.         A$ = ""
  402.         INPUT "Your Choice"; A$
  403.         KY = VAL(A$)
  404.         IF (A$ > "9") OR (A$ < "0") THEN
  405.             KY = -1
  406.         END IF
  407.         IF KY > MAXVAL THEN
  408.             KY = -1
  409.         END IF
  410.         IF KY > 0 AND KY < 13 THEN
  411.             SELECT CASE RES
  412.                 CASE = 1
  413.                     OK = RES320
  414.                 CASE = 2
  415.                     OK = RES640L
  416.                 CASE = 3
  417.                     OK = RES640
  418.                 CASE = 4
  419.                     OK = RES800
  420.                 CASE = 5
  421.                     OK = RES1024
  422.                 CASE = 6
  423.                     OK = RES1280
  424.             END SELECT
  425.             IF OK <> 1 THEN
  426.                 DUMMY = RESTEXT
  427.                 CLS
  428.                 SOUND 100, 5
  429.                 PRINT "Sorry, although your video card has enough memeory, it does"
  430.                 PRINT "not support this video mode. PRESS A KEY."
  431.                 GETKEY RET$
  432.                 KY = -1
  433.             END IF
  434.         END IF
  435.         SELECT CASE KY
  436.             CASE = 0
  437.                 ENDIT = 1
  438.             CASE = 1
  439.                 'DEMO #1
  440.                 DOPRIMS RetVal$
  441.                 DUMMY = RESTEXT
  442.             CASE = 2
  443.                 'DEMO #2
  444.                 DOCLIP RetVal$
  445.                 DUMMY = RESTEXT
  446.             CASE = 3
  447.                 'DEMO #3
  448.                 DOFILL RetVal$
  449.                 DUMMY = RESTEXT
  450.             CASE = 4
  451.                 'DEMO #4
  452.                 DOPAL RetVal$
  453.                 DUMMY = RESTEXT
  454.             CASE = 5
  455.                 'DEMO #5
  456.                 DOBLOCK RetVal$
  457.                 DUMMY = RESTEXT
  458.             CASE = 6
  459.                 'DEMO #6
  460.                 DOTEXT RetVal$
  461.                 DUMMY = RESTEXT
  462.             CASE = 7
  463.                 'DEMO #7
  464.                 DOSCROLL RetVal$
  465.                 DUMMY = RESTEXT
  466.             CASE = 8
  467.                 'DEMO #8
  468.                 DOPCX RetVal$
  469.                 DUMMY = RESTEXT
  470.             CASE = 9
  471.                 'DEMO #9
  472.                 DOMOUSE RetVal$
  473.                 DUMMY = RESTEXT
  474.             CASE = 10
  475.                 'DEMO #10
  476.                 DOJOYSTICK RetVal$
  477.                 DUMMY = RESTEXT
  478.             CASE = 11
  479.                 'DEMO #11
  480.                 DO2D RetVal$
  481.                 DUMMY = RESTEXT
  482.             CASE = 12
  483.                 'DEMO #12
  484.                 DO3D RetVal$
  485.                 DUMMY = RESTEXT
  486.             CASE = 13
  487.                 'DO THE GRAND TOUR OF ALL DEMOS!
  488.                 CLS
  489.                 PRINT "Press 'Q' To End Grand Tour At Any Time. Press 'S' To Skip To The Next"
  490.                 PRINT "Demo At Any Time. Press Any Other Key to Begin The Grand Tour..."
  491.                 GETKEY RET$
  492.                 IF RET$ = "Q" THEN
  493.                     GOTO EXITGRANDTOUR
  494.                 END IF
  495.  
  496.                 SELECT CASE RES
  497.                     CASE = 1
  498.                         OK = RES320
  499.                     CASE = 2
  500.                         OK = RES640L
  501.                     CASE = 3
  502.                         OK = RES640
  503.                     CASE = 4
  504.                         OK = RES800
  505.                     CASE = 5
  506.                         OK = RES1024
  507.                     CASE = 6
  508.                         OK = RES1280
  509.                 END SELECT
  510.                 IF OK <> 1 THEN
  511.                     DUMMY = RESTEXT
  512.                     CLS
  513.                     SOUND 100, 5
  514.                     PRINT "Sorry, although your video card has enough memeory, it does"
  515.                     PRINT "not support this video mode. PRESS A KEY."
  516.                     GETKEY RET$
  517.                     GOTO EXITGRANDTOUR
  518.                 END IF
  519.                 'DEMO #1
  520.                 DOPRIMS RetVal$
  521.                 IF RetVal$ = "Q" THEN
  522.                     GOTO EXITGRANDTOUR
  523.                 END IF
  524.                 'DEMO #2
  525.                 DOCLIP RetVal$
  526.                 IF RetVal$ = "Q" THEN
  527.                     GOTO EXITGRANDTOUR
  528.                 END IF
  529.                 'DEMO #3
  530.                 DOFILL RetVal$
  531.                 IF RetVal$ = "Q" THEN
  532.                     GOTO EXITGRANDTOUR
  533.                 END IF
  534.                 'DEMO #4
  535.                 DOPAL RetVal$
  536.                 IF RetVal$ = "Q" THEN
  537.                     GOTO EXITGRANDTOUR
  538.                 END IF
  539.                 'DEMO #5
  540.                 DOBLOCK RetVal$
  541.                 IF RetVal$ = "Q" THEN
  542.                     GOTO EXITGRANDTOUR
  543.                 END IF
  544.                 'DEMO #6
  545.                 DOTEXT RetVal$
  546.                 IF RetVal$ = "Q" THEN
  547.                     GOTO EXITGRANDTOUR
  548.                 END IF
  549.                 'DEMO #7
  550.                 DOSCROLL RetVal$
  551.                 IF RetVal$ = "Q" THEN
  552.                     GOTO EXITGRANDTOUR
  553.                 END IF
  554.                 'DEMO #8
  555.                 DOPCX RetVal$
  556.                 IF RetVal$ = "Q" THEN
  557.                     GOTO EXITGRANDTOUR
  558.                 END IF
  559.                 'DEMO #9
  560.                 DOMOUSE RetVal$
  561.                 IF RetVal$ = "Q" THEN
  562.                     GOTO EXITGRANDTOUR
  563.                 END IF
  564.                 'DEMO #10
  565.                 DOJOYSTICK RetVal$
  566.                 IF RetVal$ = "Q" THEN
  567.                     GOTO EXITGRANDTOUR
  568.                 END IF
  569.                 'DEMO #11
  570.                 DO2D RetVal$
  571.                 IF RetVal$ = "Q" THEN
  572.                     GOTO EXITGRANDTOUR
  573.                 END IF
  574.                 'DEMO #12
  575.                 DO3D RetVal$
  576. EXITGRANDTOUR:
  577.                 RetVal$ = ""
  578.                 DUMMY = RESTEXT
  579.             CASE = 14
  580.                 RES = 1
  581.             CASE = 15
  582.                 RES = 2
  583.             CASE = 16
  584.                 RES = 3
  585.             CASE = 17
  586.                 RES = 4
  587.             CASE = 18
  588.                 RES = 5
  589.             CASE = 19
  590.                 RES = 6
  591.             CASE ELSE
  592.                 SOUND 100, 5
  593.         END SELECT
  594.         IF RetVal$ = "Q" THEN
  595.             ENDIT = 1
  596.         END IF
  597.     WEND
  598.  
  599.     '*************************************************************************
  600.     '* THAT'S ALL FOLKS! END THE PROGRAM
  601.     '*************************************************************************
  602.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  603.     VIDEOMODESET STARTVIDEOMODE '*RESTORE THE VIDEOMODE WE STARTED IN
  604.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  605.     CLEAR
  606.     END
  607.  
  608.  
  609.     '*************************************************************************
  610.     '* DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA
  611.     '*************************************************************************
  612.  
  613.     REM *MAGNIFIER MOUSE CURSOR DATA
  614.     DATA 7,6
  615.     DATA 255,255,255,255,255,7  ,7  ,7  ,7  ,255,255,255,255,255,255,255
  616.     DATA 255,255,255,  7,  7,255,255,255,255,7  ,7,  255,255,255,255,255
  617.     DATA 255,255,7  ,255,255,255,255,255,255,255,255,7  ,255,255,255,255
  618.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  619.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  620.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  621.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  622.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  623.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  624.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  625.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  626.     DATA 255,7  ,7  ,255,255,255,255,255,255,255,255,7  ,7  ,255,255,255
  627.     DATA 255,255,7  ,7  ,7  ,255,255,255,255,7  ,7  ,7  ,255,255,255,255
  628.     DATA 255,255,255,7  ,7  ,7  ,7  ,7  ,7  ,8  ,8  ,255,255,255,255,255
  629.     DATA 255,255,255,255,255,7  ,7  ,7  ,7  ,7  ,8  ,8  ,255,255,255,255
  630.     DATA 255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255,255
  631.     DATA 255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255
  632.     DATA 255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255
  633.     DATA 255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255
  634.     DATA 255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255
  635.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255
  636.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255
  637.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8
  638.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7  ,7  ,7
  639.  
  640.     REM *BIG ARROW MOUSE CURSOR DATA
  641.     DATA 1,1
  642.     DATA 0  ,0  ,0  ,255,255,255,255,255,255,255,255,255,255,255,255,255
  643.     DATA 0  ,15 ,15 ,0  ,0  ,255,255,255,255,255,255,255,255,255,255,255
  644.     DATA 0  ,15 ,15 ,15 ,15 ,0  ,0  ,0  ,255,255,255,255,255,255,255,255
  645.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255,255,255,255,255
  646.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,0  ,255,255,255
  647.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255
  648.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255
  649.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255
  650.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255,255,255,255
  651.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255,255,255,255
  652.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255,255,255,255,255,255
  653.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,0  ,15 ,15 ,15 ,0  ,255,255,255,255,255
  654.     DATA 0  ,15 ,15 ,15 ,15 ,0  ,0  ,15 ,15 ,15 ,0  ,255,255,255,255,255
  655.     DATA 0  ,15 ,15 ,0  ,0  ,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255,255
  656.     DATA 0  ,15 ,0  ,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255,255
  657.     DATA 0  ,0  ,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255
  658.     DATA 255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255
  659.     DATA 255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255
  660.     DATA 255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255
  661.     DATA 255,255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0
  662.     DATA 255,255,255,255,255,255,255,255,255,255,255,0, 15  ,15 ,15 ,0
  663.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,0
  664.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,0  ,0  ,0
  665.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  666.  
  667.     REM *STOPWATCH MOUSE CURSOR DATA
  668.     DATA 8,11
  669.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  670.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  671.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  672.     DATA 255,255,255,255,255,255,255,15 ,15 ,255,255,255,255,255,255,255
  673.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  674.     DATA 255,255,255,255,15 ,15 ,15 ,7  ,7  ,15 ,15 ,15 ,255,255,255,255
  675.     DATA 255,255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255,255
  676.     DATA 255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255
  677.     DATA 255,15 ,15 ,7  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255
  678.     DATA 255,15 ,7  ,7  ,7  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,255
  679.     DATA 15 ,15 ,7  ,7  ,7  ,7  ,0  ,7  ,7  ,7  ,0  ,0  ,7  ,7  ,15 ,15
  680.     DATA 15 ,7  ,7  ,7  ,7  ,7  ,7  ,0  ,0  ,0  ,7  ,7  ,7  ,7  ,7  ,15
  681.     DATA 15,7   ,7  ,7  ,7  ,7  ,7  ,0  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,15
  682.     DATA 15,15  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15
  683.     DATA 255,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,255
  684.     DATA 255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255
  685.     DATA 255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255
  686.     DATA 255,255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255,255
  687.     DATA 255,255,255,255,15 ,15 ,15 ,7  ,7  ,15 ,15 ,15 ,255,255,255,255
  688.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  689.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  690.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  691.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  692.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  693.  
  694.  
  695.     SUB GETKEY (KEYP$)
  696.  
  697.     '*************************************************************************
  698.     '* THIS ROUTINE WAITS FOR A KEY STROKE
  699.     '*************************************************************************
  700.     FOR A = 0 TO 7 '* CLEAR THE KBD BUFFER
  701.         A$ = INKEY$
  702.     NEXT A
  703.     SOUND 700, .75
  704.     A$ = ""
  705.     WHILE A$ = ""
  706.         A$ = INKEY$
  707.         IF A$ = "q" THEN
  708.             A$ = "Q"
  709.         END IF
  710.         IF A$ = "s" THEN
  711.             A$ = "S"
  712.         END IF
  713.     WEND
  714.     KEYP$ = A$
  715.     END SUB
  716.  
  717.